import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;

/**
 * 反射API用来生成JVM中的类、接口或则对象的信息。
 *
 * 1.Class类：反射的核心类，可以获取类的属性，方法等信息。
 * 2.Field类：java.lang.reflect 包中的类，表示类的成员变量，可以用
 *           来获取和设置类中的属性值。
 * 3.Method类：java.lang.reflect包中的类，表示类的方法，它可以用来
 *            获取类中的方法信息或者执行方法。
 * 4.Constructor类：java.lang.reflect包中的类，表示类的构造方法。
 */

public class ReflectDemo02 {
    public static void main(String[] args) throws Exception {
        //获取Student类的Class对象
        Class stu = Class.forName("Student");
        //获取Student类的所有方法信息
        Method[] method = stu.getDeclaredMethods();
        for (Method m : method){
            System.out.println(m.toString());
        }
        //获取Student类的所有成员属性信息
        Field[] field = stu.getDeclaredFields();
        for (Field f : field){
            System.out.println(f.toString());
        }
        //获取Student类的所有构造方法信息
        Constructor[] constructor = stu.getDeclaredConstructors();
        for (Constructor c : constructor){
            System.out.println(c.toString());
        }
    }
}
